package com.supermap.dubbo.service.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.security.MessageDigest;
import java.text.SimpleDateFormat;

/**
 * 
* @ClassName: StringUtil 
* @Description: 字符串操作工具
* @author yuyao
* @date 2017年12月29日 上午10:24:20
 */
public class StringUtil {

	private static SimpleDateFormat defaultDateTimeFormatter = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");
	
	/**
	 * 
	* @Title: objToString 
	* @Description: Object[] 转为 String
	* @param @param data    设定文件 
	* @return void    返回类型 
	* @throws
	 */
	 public static String objToString(Object[] data) {
    	StringBuffer sb = new StringBuffer();
    	for(Object obj : data) {
    		 String gson =  JSON.toJSONString(obj);
    		 sb.append(gson);
    	}
    	String fhsj = null;
    	try {
			fhsj = EncoderByMd5(sb.toString());
		} catch (Exception e) {
			System.out.println("Object[] 转为 String 出现异常，转换参数：" + sb);
			//e.printStackTrace();
		}
    	return fhsj;
    }
	 /**
     * 
    * @Title: EncoderByMd5 
    * @Description: 对字符串进行 md5加密
    * @param @param str
    * @param @return
    * @param @throws Exception    设定文件 
    * @return String    返回类型 
    * @throws
     */
    public static String EncoderByMd5(String str) throws Exception {
    	//返回实现指定摘要算法的 MessageDigest 对象。
    	MessageDigest md5=MessageDigest.getInstance("md5");
    	//先将字符串转换成byte数组，再用byte 数组更新摘要
        md5.update(str.getBytes());
        //哈希计算
        byte[] nStr = md5.digest();
        //加密的结果是byte数组，将byte数组转换成字符串
        return byHex(nStr);
    }
    
    /**
     * 
    * @Title: byHex 
    * @Description: byte[] 转换为String
    * @param @param bts
    * @param @return    设定文件 
    * @return String    返回类型 
    * @throws
     */
    private static String byHex(byte[] bts) {
        String des = "";
        String tmp = null;
        for (int i = 0; i < bts.length; i++) {
            tmp = (Integer.toHexString(bts[i] & 0xFF));
            if (tmp.length() == 1) {
                des += "0";
            }
            des += tmp;
        }
        return des;
    }
    
    /**
	 * 
	* @Title: isNull 
	* @Description: 判断字符串是否为空
	* @param @param str
	* @param @return    设定文件 
	* @return boolean    返回类型 
	* @throws
	 */
	public static boolean isNotNull(final CharSequence cs) {
		
		if(cs == null || cs.length() == 0 || "".equals(cs) || "null".equals(cs))return false;
		
		return true;
	}
    
    
    /**
	 * 取得系统当前的日期时间字符表达式,格式如: (2008-05-12 14:28:36)<br>
	 * 
	 * @return String
	 */
	public static String getSystemDateTimeString() {
		return defaultDateTimeFormatter.format(new java.util.Date());
	}
	
	/**
	 * 
	* @Title: getJson
	* @Description: String转JSON
	* @param @param json
	* @param @return    设定文件
	* @return JSONObject    返回类型
	* @throws
	 */
	public static JSONObject getJson(String json) {
		
		JSONObject jsn = (JSONObject) JSON.toJSON(json);
		
		return jsn;
	}
	
}
